iOS SDK API

移动用户反馈 iOS SDK 的API说明文档

SDK 初始化(使用appKey和appSecret)

/// @brief 初始化方法
/// @params anAppKey AppKey
/// @params anAppSecret AppSecret
/// @return YWFeedbackKit实例
- (instancetype)initWithAppKey:(NSString *)anAppKey appSecret:(NSString *)anAppSecret;

用法:

// SDK初始化,手动配置appKey/appSecret
self.feedbackKit = [[YWFeedbackKit alloc] initWithAppKey:kAppKey appSecret:kAppSecret];

获取未读消息数

用于在移动应用中,主动拉取获得未读消息数

/// @brief 反馈未读消息数回调Block
/// @params unreadCount 未读消息数
/// @return error 调用失败返回错误
typedef void (^YWGetUnreadCountCompletionBlock) (NSInteger unreadCount, NSError *error);

/// @brief 请求反馈未读消息数
- (void)getUnreadCountWithCompletionBlock:(YWGetUnreadCountCompletionBlock)completionBlock;

用法:

/** 查询未读消息数 */
- (void)fetchUnreadCount {
    __weak typeof(self) weakSelf = self;
    // feedbackKit为持有的iOS SDK Kit
    [self.feedbackKit getUnreadCountWithCompletionBlock:^(NSInteger unreadCount, NSError *error) {
        // 返回的block中,会包含未读消息数量和错误
        // 在这里进行后续的业务逻辑
    }];
}

打开/关闭移动用户反馈页面

用于在移动应用中,打开移动用户反馈页面,进行后续的反馈相关操作。

/// @brief 创建反馈页面回调Block
/// @params viewController 反馈页面
/// @return error 调用失败返回错误
typedef void (^YWMakeFeedbackViewControllerCompletionBlock) (YWFeedbackViewController * viewController, NSError *error);

/// @brief 创建反馈页面,默认为不显示弹出错误信息
- (void)makeFeedbackViewControllerWithCompletionBlock:(YWMakeFeedbackViewControllerCompletionBlock)completionBlock;

用于接收移动用户反馈页面关闭的回调,以便用户关闭反馈页面。

/// @brief 关闭YWFeedbackView的block
@property (nonatomic, copy) YWCloseBlock closeBlock;

用法:

/** 打开用户反馈页面 */
- (void)openFeedbackViewController {
     __weak typeof(self) weakSelf = self;
    [self.feedbackKit makeFeedbackViewControllerWithCompletionBlock:^(YWFeedbackViewController *viewController, NSError *error) {
        // 返回获取到的viewController或错误
        // 如果没有出错的话,业务方可以拿到反馈页面viewController,并根据需要进行后续页面展示操作
        if (viewController != nil) {
            UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:viewController];
            [weakSelf presentViewController:nav animated:YES completion:nil];
            
            // 设置反馈页面关闭回调
            [viewController setCloseBlock:^(UIViewController *aParentController){
                [aParentController dismissViewControllerAnimated:YES completion:nil];
            }];
        } else {
            /** 使用自定义的方式抛出error时,此部分可以注释掉 */
            NSString *title = [error.userInfo objectForKey:@"msg"]?:@"接口调用失败,请保持网络通畅!";
            [[TWMessageBarManager sharedInstance] showMessageWithTitle:title
                                                           description:nil
                                                                  type:TWMessageBarMessageTypeError];
        }
    }];
}

设置用户名

用来设置用户名,设置后,可以在移动反馈控制台会话中查看,用于标识用户

/**
 设置反馈用户名,请于SDK初始化完成后调用
 (该用户名,可以在移动反馈控制台反馈会话中查看,用于标识用户)
 @param nickName 反馈用户名
 */
- (void)setUserNick:(NSString *)nickName;

用法:

[self.feedbackKit setUserNick:@"***"];

设置自定义扩展信息

用来设置自定义的扩展信息,可以方便在移动反馈控制台查看。

/// @brief 业务方扩展反馈数据,在创建反馈页面前设置
@property (nonatomic, strong, readwrite) NSDictionary *extInfo;

用法:

 /** 设置App自定义扩展反馈数据 */
 // 在进入反馈页面之前设置
self.feedbackKit.extInfo = @{@"loginTime":[[NSDate date] description],
                                 @"visitPath":@"登录->关于->反馈",
                                 @"userid":@"yourid",
                                 @"应用自定义扩展信息":@"开发者可以根据需要设置不同的自定义信息,方便在反馈系统中查看"};

设置自定义错误展示视图

可以通过设置该属性,来自定义错误展示视图

/// @brief 反馈页面对外抛出Error的回调block。不设置此属性时,将使用默认Alert方式进行错误提示
/// @params viewController 反馈页面
/// @return error 失败error
@property (nonatomic, copy) void (^YWFeedbackViewControllerErrorBlock) (YWFeedbackViewController *viewController, NSError *error);

用法:

/** 使用自定义的方式抛出error */
[self.feedbackKit setYWFeedbackViewControllerErrorBlock:^(YWFeedbackViewController *viewController, NSError *error) {
    NSString *title = [error.userInfo objectForKey:@"msg"]?:@"接口调用失败,请保持网络通畅!";
    [[TWMessageBarManager sharedInstance] showMessageWithTitle:title
                                                   description:[NSString stringWithFormat:@"%ld", error.code]
                                                          type:TWMessageBarMessageTypeError];
}];

设置用户反馈页面导航栏按钮字体

/// @brief 如果不设置,默认为:`[UIFont boldSystemFontOfSize:13]`
@property (nonatomic, strong) UIFont *defaultCloseButtonTitleFont;

/// @brief 如果不设置,默认为:`[UIFont boldSystemFontOfSize:13]`
@property (nonatomic, strong) UIFont *defaultRightBarButtonItemTitleFont;

用法:

self.feedbackKit.defaultCloseButtonTitleFont = [UIFont systemFontOfSize:18];
self.feedbackKit.defaultRightBarButtonItemTitleFont= [UIFont systemFontOfSize:20];